package main

import (
	"fmt"
)

func pushDominoes(dominoes string) string {
    n := len(dominoes)
	pre := make([]int, n)
	pre[0] = -1
	for i := 1; i < n; i++ {
		if dominoes[i] == '.' {
			if pre[i - 1] != -1 {
				pre[i] = pre[i - 1] + 1
			} else {
				pre[i] = -1
			}
		} else if dominoes[i] == 'L' {
			pre[i] = -1
		} else {
			pre[i] = 0
		}
	}
	suf := make([]int, n)
	suf[n - 1] = -1
	if dominoes[n - 1] == 'L' {
		suf[n - 1] = 0
	}
	ans := []byte(dominoes)
	if pre[n - 1] > 0 {
		ans[n - 1] = 'R'
	}
	for i := n - 2; i >= 0; i-- {
		if dominoes[i] == '.' {
			if suf[i + 1] == -1 {
				suf[i] = -1
			} else {
				suf[i] = suf[i + 1] + 1
			}
		} else if dominoes[i] == 'R' {
			suf[i] = -1
		} else {
			suf[i] = 0
		}
		if dominoes[i] != '.' {
			continue
		}
		if pre[i] > 0 {
			if suf[i] > 0 {
				if pre[i] > suf[i] {
					ans[i] = 'L'
				} else if pre[i] < suf[i] {
					ans[i] = 'R'
				}
			} else {
				ans[i] = 'R'
			}
		} else {
			if suf[i] > 0 {
				ans[i] = 'L'
			}
		}
		// if pre[i] < suf[i] {
		// 	if pre[i] > 0 {
		// 		ans[i] = 'R'
		// 	}
		// } else if pre[i] > suf[i] {
		// 	if suf[i] > 0 {
		// 		ans[i] = 'L'
		// 	}
		// }
	}
	return string(ans)
}


func main() {
	// dominoes := ".L.R...LR..L.."
	dominoes := "RR.L"
	fmt.Println(pushDominoes(dominoes))
	// "LL.RR.LLRRLL.."
}